﻿
/*编写有关数学的API请遵循以下规范：
 
  #无论有没有实现IEqualityComparer<T>,
  有关数学的引用类型都应当重写GetHashCode和Equals方法，
  并执行基于值的比较，这是为了和数学运算的习惯相符合
 
  #如果API涉及到了计算，那么一律使用Num作为统一的数字类型，
  它可以兼容一切数字类型，避免了反复声明类型不同但作用一致的函数
   
  #如果API仅涉及数字的比较，那么尽量使用IComparable<T>，
  因为在这种情况下，Num带来的好处不明显，
  而IComparable<T>能够将API适用范围扩展到不是数字的类型上，例如一个时间间隔*/